home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / IFFReader.s < prev    next >
Text File  |  1994-07-10  |  17KB  |  1,029 lines

  1.     Opt    c-
  2.     Section    "Base Code",Code_f
  3.  
  4. MainBase    = $58000
  5. CopperList1    = $40000
  6. CopperList2    = $4cf04
  7.  
  8. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  9.     Bsr    KillSys      
  10.     
  11.     Lea    CopperList,a0 
  12.     Lea    HardWare,a6      
  13.     Move.l    a0,Cop1Lc(a6)      
  14.     Move.w    #$83c0,DMACon(a6)
  15.  
  16.     Bsr    ConvertIFF
  17.  
  18.     Bsr    CopperRotate
  19.         
  20. Loop    Btst    #6,$Bfe001      
  21.     Bne    Loop      
  22.         
  23.     Bsr    ReturnSys      
  24.     Movem.l    (sp)+,d0-d7/a0-a6 
  25.     Moveq    #0,d0      
  26.     Rts
  27.  
  28. ConvertIFF    Lea    IFFPiccy,a1
  29.     Move.l    (a1)+,d0
  30.     Cmp.l    #"FORM",d0
  31.     Beq    FoundIFF
  32.     Rts
  33.  
  34. FoundIFF    Move.l    (a1)+,d1
  35. NewForm    Move.l    (a1)+,d0
  36.     Cmp.l    #"ANIM",d0
  37.     Beq    GetAnim
  38.     Cmp.l    #"ILBM",d0
  39.     Beq    GetAnim
  40.     Rts
  41.     
  42. GetAnim    Move.l    (a1)+,d0
  43.     Move.l    (a1)+,d1
  44.     Cmp.l    #"FORM",d0
  45.     Beq    NewForm
  46.     Cmp.l    #"BMHD",d0
  47.     Beq    GetInfo
  48.     Cmp.l    #"CMAP",d0
  49.     Beq    GetPalette
  50.     Cmp.l    #"BODY",d0
  51.     Beq    DecrunchIFF
  52. EndHunk    Add.l    d1,a1
  53.     Btst    #0,d1
  54.     Beq    SkipTest
  55.     Addq.l    #1,a1
  56. SkipTest    Lea    IFFPiccy,a5
  57.     Add.l    #EndFile-IFFPiccy,a5
  58.     Cmp.l    a5,a1
  59.     Blt    GetAnim
  60. ExitConv    Rts
  61.  
  62. GetInfo    Lea    PiccyWidth(pc),a5
  63.     Move.w    00(a1),00(a5)
  64.     Move.w    02(a1),02(a5)
  65.     Move.b    08(a1),05(a5)
  66.     Bra    EndHunk
  67.  
  68. DecrunchIFF    Move.l    ScreenBase(pc),a3
  69.     Move.l    d1,d7
  70.     Move.l    a1,a2
  71.     Move.l    a2,a4
  72.     Add.l    d1,a4
  73. DecLoop    Moveq    #0,d0
  74.     Move.b    (a2)+,d0
  75.     Bmi    GetByte
  76. DataLoop    Move.b    (a2)+,(a3)+
  77.     Dbf    d0,DataLoop
  78.     Bra    CheckLast
  79. GetByte    Cmp.b    #-128,d0
  80.     Beq    CheckLast
  81.     Neg.b    d0
  82.     Move.b    (a2)+,d2
  83. ByteLoop    Move.b    d2,(a3)+
  84.     Dbf    d0,ByteLoop
  85. CheckLast    Cmpa.l    a2,a4
  86.     Bgt    DecLoop
  87.     Bra    EndHunk
  88.     
  89. GetPalette    Move.l    a1,a3
  90.     Lea    Palette(pc),a4
  91.     Moveq    #0,d2
  92.     Moveq    #0,d7
  93.     Move.w    Planes(pc),d2
  94.     Bset    d2,d7
  95.     
  96.     Moveq    #16,d7
  97.     
  98.     Moveq    #0,d0
  99. DoColours    Move.b    (a3)+,d5    ; Red
  100.     Move.b    (a3)+,d2    ; Green
  101.     Move.b    (a3)+,d3    ; Blue
  102.     Lsr.b    #4,d3
  103.  
  104.     Move.b    d5,d4
  105.     Asl.w    #4,d4
  106.     Or.b    d2,d4
  107.     Or.b    d3,d4
  108.     Move.w    d4,(a4)+
  109.     Moveq    #0,d4
  110.     Addq    #1,d0
  111.     Cmp.b    d0,d7
  112.     Bne    DoColours
  113.     Bra    EndHunk
  114.  
  115. CopperRotate    Bsr    MakeColourData2
  116.     Bsr    MakeCopper
  117.     Lea    MainCopper,a0
  118.     Move.l    a0,$Dff080
  119.     
  120. MainLoop    Bsr    VBL    
  121.     Bsr    DoubleBuffer
  122.     
  123.     Bsr    DoSines
  124.     Bsr    MakeRotation
  125.     Bsr    BuildXYData
  126.     
  127.     Btst    #6,$Bfe001
  128.     Bne    MainLoop
  129.     Rts
  130.  
  131. DoSines    Lea    CopSine(pc),a0
  132.     Lea    SineVar1(pc),a5
  133.     Lea    $200(a0),a0
  134.     Move.w    SineVar1(pc),d0
  135.     Move.w    0(a0,d0.w),d0
  136.     Muls    #$80,d0
  137.     Asr.l    #8,d0
  138.     Add.w    #$A0,d0
  139.     Move.w    d0,08(a5)
  140.     Move.w    SineVar2(pc),d0
  141.     Move.w    0(a0,d0.w),d0
  142.     Muls    #$5A,d0
  143.     Asr.w    #8,d0
  144.     Add.w    #$80,d0
  145.     Move.w    d0,10(a5)
  146.     Move.w    SineVar3(pc),d0
  147.     Move.w    0(a0,d0.w),d0
  148.     Asr.w    #5,d0
  149.     Add.w    d0,d0
  150.     Add.w    d0,06(a5)
  151.     Add.w    #4,00(a5)
  152.     Add.w    #8,02(a5)
  153.     Add.w    #6,04(a5)
  154.     And.w    #$7fe,00(a5)
  155.     And.w    #$7fe,02(a5)
  156.     And.w    #$7fe,04(a5)
  157.     And.w    #$0,06(a5)
  158.     Rts
  159.     
  160. DoubleBuffer    Lea    CopperListPt1(pc),a0
  161.     Move.l    (a0),d0
  162.     Move.l    4(a0),(a0)
  163.     Move.l    d0,4(a0)
  164.     Lea    Copper2Ptr,a0
  165.     Move.w    d0,6(a0)
  166.     Swap    d0
  167.     Move.w    d0,2(a0)
  168.     Rts
  169.     
  170. MakeRotation    Lea    CopSine(pc),a1
  171.     Lea    $200(a1),a0
  172.     Lea    RotSines(pc),a2
  173.     Lea    RotSineX1(pc),a3
  174.     Move.w    ZRot(pc),d0
  175.     Moveq.l    #2,d7
  176. MakeRotSine    Move.w    0(a1,d0.w),d1
  177.     Move.w    0(a0,d0.w),d2
  178.     Muls    (a2),d1
  179.     Muls    2(a2),d2
  180.     Add.l    d2,d1
  181.     Asr.l    #8,d1
  182.     Move.w    0(a0,d0.w),d2
  183.     Move.w    0(a1,d0.w),d3
  184.     Muls    (a2),d2
  185.     Muls    2(a2),d3
  186.     Sub.l    d3,d2
  187.     Asr.l    #8,d2
  188.     Add.w    XPos(pc),d1
  189.     Add.w    YPos(pc),d2
  190.     Move.w    d1,(a3)+
  191.     Move.w    d2,(a3)+
  192.     Addq    #4,a2
  193.     Dbf    d7,MakeRotSine
  194.     Rts    
  195.  
  196. BuildXYData    Lea    MatrixVar1(pc),a6
  197.     Move.w    RotSineX3(pc),d0
  198.     Move.w    RotSineX4(pc),d1
  199.     Ext.l    d0
  200.     Ext.l    d1
  201.     Asl.l    #8,d0
  202.     Asl.l    #8,d1
  203.     Move.l    d0,00(a6)
  204.     Move.l    d1,04(a6)
  205.     Move.w    RotSineX5(pc),d2
  206.     Move.w    RotSineX6(pc),d3
  207.     Ext.l    d2
  208.     Ext.l    d3
  209.     Asl.l    #8,d2
  210.     Asl.l    #8,d3
  211.     Sub.l    d0,d2
  212.     Sub.l    d1,d3
  213.     Divs    #$2c,d2
  214.     Divs    #$2c,d3
  215.     Ext.l    d2
  216.     Ext.l    d3
  217.     Move.l    d2,08(a6)
  218.     Move.l    d3,16(a6)
  219.     Move.w    RotSineX1(pc),d2
  220.     Move.w    RotSineX2(pc),d3
  221.     Ext.l    d2
  222.     Ext.l    d3
  223.     Asl.l    #8,d2
  224.     Asl.l    #8,d3
  225.     Sub.l    d0,d2
  226.     Sub.l    d1,d3
  227.     Divs    #$48,d2
  228.     Divs    #$48,d3
  229.     Ext.l    d2
  230.     Ext.l    d3
  231.     Move.l    d2,12(a6)
  232.     Move.l    d3,20(a6)
  233.     
  234.     Lea    SetCopperLine+2(pc),a0
  235.     Moveq.l    #0,d0
  236.     Moveq.l    #0,d1
  237.     Move.l    MatrixVar3(pc),d2
  238.     Move.l    MatrixVar5(pc),d3
  239.  
  240.     Moveq.l    #$2b,d7
  241. AlterMatrixLoop    Move.l    d0,d4
  242.     Asr.l    #8,d4
  243.     Move.l    d1,d5
  244.     Asr.l    #8,d5
  245.     Muls    #$280,d5
  246.     Add.w    d4,d5
  247.     Add.w    d4,d5
  248.     Move.w    d5,(a0)
  249.     Add.l    d2,d0
  250.     Add.l    d3,d1
  251.     Lea    $14(a0),a0
  252.     Dbf    d7,AlterMatrixLoop
  253.     
  254.     Move.l    CopperListPt1(pc),a1
  255.     Addq    #6,a1
  256.     Move.l    ColourTabBase(pc),a5
  257.     Moveq.l    #$47,d7
  258.     Move.l    MatrixVar1(pc),d1
  259.     Move.l    MatrixVar2(pc),d2
  260.     Move.l    MatrixVar4(pc),d3
  261.     Move.l    MatrixVar6(pc),d4
  262. CopperLineLoop    Move.l    d1,d5
  263.     Move.l    d2,d6
  264.     Asr.l    #8,d5
  265.     Asr.l    #8,d6
  266.     Muls    #$280,d6
  267.     Add.l    d5,d6
  268.     Add.l    d5,d6
  269.     Move.l    a5,a0
  270.     Add.l    d6,a0
  271.     Bsr    SetCopperLine
  272.     Add.l    d3,d1
  273.     Add.l    d4,d2
  274.     Lea    $230(a1),a1
  275.     Dbf    d7,CopperLineLoop
  276.     Rts    
  277.  
  278. SetCopperLine    Move.w    $400(a0),d0
  279.     Move.w    d0,(a1)
  280.     Move.w    d0,$0b8(a1)
  281.     Move.w    d0,$170(a1)
  282.     Move.w    d0,$228(a1)
  283.     Addq.l    #4,a1
  284.     Move.w    $400(a0),d0
  285.     Move.w    d0,(a1)
  286.     Move.w    d0,$0b8(a1)
  287.     Move.w    d0,$170(a1)
  288.     Move.w    d0,$228(a1)
  289.     Addq.l    #4,a1
  290.     Move.w    $400(a0),d0
  291.     Move.w    d0,(a1)
  292.     Move.w    d0,$0b8(a1)
  293.     Move.w    d0,$170(a1)
  294.     Move.w    d0,$228(a1)
  295.     Addq.l    #4,a1
  296.     Move.w    $400(a0),d0
  297.     Move.w    d0,(a1)
  298.     Move.w    d0,$0b8(a1)
  299.     Move.w    d0,$170(a1)
  300.     Move.w    d0,$228(a1)
  301.     Addq.l    #4,a1
  302.     Move.w    $400(a0),d0
  303.     Move.w    d0,(a1)
  304.     Move.w    d0,$0b8(a1)
  305.     Move.w    d0,$170(a1)
  306.     Move.w    d0,$228(a1)
  307.     Addq.l    #4,a1
  308.     Move.w    $400(a0),d0
  309.     Move.w    d0,(a1)
  310.     Move.w    d0,$0b8(a1)
  311.     Move.w    d0,$170(a1)
  312.     Move.w    d0,$228(a1)
  313.     Addq.l    #4,a1
  314.     Move.w    $400(a0),d0
  315.     Move.w    d0,(a1)
  316.     Move.w    d0,$0b8(a1)
  317.     Move.w    d0,$170(a1)
  318.     Move.w    d0,$228(a1)
  319.     Addq.l    #4,a1
  320.     Move.w    $400(a0),d0
  321.     Move.w    d0,(a1)
  322.     Move.w    d0,$0b8(a1)
  323.     Move.w    d0,$170(a1)
  324.     Move.w    d0,$228(a1)
  325.     Addq.l    #4,a1
  326.     Move.w    $400(a0),d0
  327.     Move.w    d0,(a1)
  328.     Move.w    d0,$0b8(a1)
  329.     Move.w    d0,$170(a1)
  330.     Move.w    d0,$228(a1)
  331.     Addq.l    #4,a1
  332.     Move.w    $400(a0),d0
  333.     Move.w    d0,(a1)
  334.     Move.w    d0,$0b8(a1)
  335.     Move.w    d0,$170(a1)
  336.     Move.w    d0,$228(a1)
  337.     Addq.l    #4,a1
  338.     Move.w    $400(a0),d0
  339.     Move.w    d0,(a1)
  340.     Move.w    d0,$0b8(a1)
  341.     Move.w    d0,$170(a1)
  342.     Move.w    d0,$228(a1)
  343.     Addq.l    #4,a1
  344.     Move.w    $400(a0),d0
  345.     Move.w    d0,(a1)
  346.     Move.w    d0,$0b8(a1)
  347.     Move.w    d0,$170(a1)
  348.     Move.w    d0,$228(a1)
  349.     Addq.l    #4,a1
  350.     Move.w    $400(a0),d0
  351.     Move.w    d0,(a1)
  352.     Move.w    d0,$0b8(a1)
  353.     Move.w    d0,$170(a1)
  354.     Move.w    d0,$228(a1)
  355.     Addq.l    #4,a1
  356.     Move.w    $400(a0),d0
  357.     Move.w    d0,(a1)
  358.     Move.w    d0,$0b8(a1)
  359.     Move.w    d0,$170(a1)
  360.     Move.w    d0,$228(a1)
  361.     Addq.l    #4,a1
  362.     Move.w    $400(a0),d0
  363.     Move.w    d0,(a1)
  364.     Move.w    d0,$0b8(a1)
  365.     Move.w    d0,$170(a1)
  366.     Move.w    d0,$228(a1)
  367.     Addq.l    #4,a1
  368.     Move.w    $400(a0),d0
  369.     Move.w    d0,(a1)
  370.     Move.w    d0,$0b8(a1)
  371.     Move.w    d0,$170(a1)
  372.     Move.w    d0,$228(a1)
  373.     Addq.l    #4,a1
  374.     Move.w    $400(a0),d0
  375.     Move.w    d0,(a1)
  376.     Move.w    d0,$0b8(a1)
  377.     Move.w    d0,$170(a1)
  378.     Move.w    d0,$228(a1)
  379.     Addq.l    #4,a1
  380.     Move.w    $400(a0),d0
  381.     Move.w    d0,(a1)
  382.     Move.w    d0,$0b8(a1)
  383.     Move.w    d0,$170(a1)
  384.     Move.w    d0,$228(a1)
  385.     Addq.l    #4,a1
  386.     Move.w    $400(a0),d0
  387.     Move.w    d0,(a1)
  388.     Move.w    d0,$0b8(a1)
  389.     Move.w    d0,$170(a1)
  390.     Move.w    d0,$228(a1)
  391.     Addq.l    #4,a1
  392.     Move.w    $400(a0),d0
  393.     Move.w    d0,(a1)
  394.     Move.w    d0,$0b8(a1)
  395.     Move.w    d0,$170(a1)
  396.     Move.w    d0,$228(a1)
  397.     Addq.l    #4,a1
  398.     Move.w    $400(a0),d0
  399.     Move.w    d0,(a1)
  400.     Move.w    d0,$0b8(a1)
  401.     Move.w    d0,$170(a1)
  402.     Move.w    d0,$228(a1)
  403.     Addq.l    #4,a1
  404.     Move.w    $400(a0),d0
  405.     Move.w    d0,(a1)
  406.     Move.w    d0,$0b8(a1)
  407.     Move.w    d0,$170(a1)
  408.     Move.w    d0,$228(a1)
  409.     Addq.l    #4,a1
  410.     Move.w    $400(a0),d0
  411.     Move.w    d0,(a1)
  412.     Move.w    d0,$0b8(a1)
  413.     Move.w    d0,$170(a1)
  414.     Move.w    d0,$228(a1)
  415.     Addq.l    #4,a1
  416.     Move.w    $400(a0),d0
  417.     Move.w    d0,(a1)
  418.     Move.w    d0,$0b8(a1)
  419.     Move.w    d0,$170(a1)
  420.     Move.w    d0,$228(a1)
  421.     Addq.l    #4,a1
  422.     Move.w    $400(a0),d0
  423.     Move.w    d0,(a1)
  424.     Move.w    d0,$0b8(a1)
  425.     Move.w    d0,$170(a1)
  426.     Move.w    d0,$228(a1)
  427.     Addq.l    #4,a1
  428.     Move.w    $400(a0),d0
  429.     Move.w    d0,(a1)
  430.     Move.w    d0,$0b8(a1)
  431.     Move.w    d0,$170(a1)
  432.     Move.w    d0,$228(a1)
  433.     Addq.l    #4,a1
  434.     Move.w    $400(a0),d0
  435.     Move.w    d0,(a1)
  436.     Move.w    d0,$0b8(a1)
  437.     Move.w    d0,$170(a1)
  438.     Move.w    d0,$228(a1)
  439.     Addq.l    #4,a1
  440.     Move.w    $400(a0),d0
  441.     Move.w    d0,(a1)
  442.     Move.w    d0,$0b8(a1)
  443.     Move.w    d0,$170(a1)
  444.     Move.w    d0,$228(a1)
  445.     Addq.l    #4,a1
  446.     Move.w    $400(a0),d0
  447.     Move.w    d0,(a1)
  448.     Move.w    d0,$0b8(a1)
  449.     Move.w    d0,$170(a1)
  450.     Move.w    d0,$228(a1)
  451.     Addq.l    #4,a1
  452.     Move.w    $400(a0),d0
  453.     Move.w    d0,(a1)
  454.     Move.w    d0,$0b8(a1)
  455.     Move.w    d0,$170(a1)
  456.     Move.w    d0,$228(a1)
  457.     Addq.l    #4,a1
  458.     Move.w    $400(a0),d0
  459.     Move.w    d0,(a1)
  460.     Move.w    d0,$0b8(a1)
  461.     Move.w    d0,$170(a1)
  462.     Move.w    d0,$228(a1)
  463.     Addq.l    #4,a1
  464.     Move.w    $400(a0),d0
  465.     Move.w    d0,(a1)
  466.     Move.w    d0,$0b8(a1)
  467.     Move.w    d0,$170(a1)
  468.     Move.w    d0,$228(a1)
  469.     Addq.l    #4,a1
  470.     Move.w    $400(a0),d0
  471.     Move.w    d0,(a1)
  472.     Move.w    d0,$0b8(a1)
  473.     Move.w    d0,$170(a1)
  474.     Move.w    d0,$228(a1)
  475.     Addq.l    #4,a1
  476.     Move.w    $400(a0),d0
  477.     Move.w    d0,(a1)
  478.     Move.w    d0,$0b8(a1)
  479.     Move.w    d0,$170(a1)
  480.     Move.w    d0,$228(a1)
  481.     Addq.l    #4,a1
  482.     Move.w    $400(a0),d0
  483.     Move.w    d0,(a1)
  484.     Move.w    d0,$0b8(a1)
  485.     Move.w    d0,$170(a1)
  486.     Move.w    d0,$228(a1)
  487.     Addq.l    #4,a1
  488.     Move.w    $400(a0),d0
  489.     Move.w    d0,(a1)
  490.     Move.w    d0,$0b8(a1)
  491.     Move.w    d0,$170(a1)
  492.     Move.w    d0,$228(a1)
  493.     Addq.l    #4,a1
  494.     Move.w    $400(a0),d0
  495.     Move.w    d0,(a1)
  496.     Move.w    d0,$0b8(a1)
  497.     Move.w    d0,$170(a1)
  498.     Move.w    d0,$228(a1)
  499.     Addq.l    #4,a1
  500.     Move.w    $400(a0),d0
  501.     Move.w    d0,(a1)
  502.     Move.w    d0,$0b8(a1)
  503.     Move.w    d0,$170(a1)
  504.     Move.w    d0,$228(a1)
  505.     Addq.l    #4,a1
  506.     Move.w    $400(a0),d0
  507.     Move.w    d0,(a1)
  508.     Move.w    d0,$0b8(a1)
  509.     Move.w    d0,$170(a1)
  510.     Move.w    d0,$228(a1)
  511.     Addq.l    #4,a1
  512.     Move.w    $400(a0),d0
  513.     Move.w    d0,(a1)
  514.     Move.w    d0,$0b8(a1)
  515.     Move.w    d0,$170(a1)
  516.     Move.w    d0,$228(a1)
  517.     Addq.l    #4,a1
  518.     Move.w    $400(a0),d0
  519.     Move.w    d0,(a1)
  520.     Move.w    d0,$0b8(a1)
  521.     Move.w    d0,$170(a1)
  522.     Move.w    d0,$228(a1)
  523.     Addq.l    #4,a1
  524.     Move.w    $400(a0),d0
  525.     Move.w    d0,(a1)
  526.     Move.w    d0,$0b8(a1)
  527.     Move.w    d0,$170(a1)
  528.     Move.w    d0,$228(a1)
  529.     Addq.l    #4,a1
  530.     Move.w    $400(a0),d0
  531.     Move.w    d0,(a1)
  532.     Move.w    d0,$0b8(a1)
  533.     Move.w    d0,$170(a1)
  534.     Move.w    d0,$228(a1)
  535.     Addq.l    #4,a1
  536.     Move.w    $400(a0),d0
  537.     Move.w    d0,(a1)
  538.     Move.w    d0,$0b8(a1)
  539.     Move.w    d0,$170(a1)
  540.     Move.w    d0,$228(a1)
  541.     Addq.l    #4,a1
  542.     Rts    
  543.  
  544. MakeColourData    Move.l    ColourTabBase(pc),a0
  545.     Lea    Palette(pc),a1
  546.     Move.l    PiccyBase(pc),a2
  547.     Lea    $2800(a2),a3
  548.     Lea    $2800(a3),a4
  549.     Lea    $2800(a4),a5
  550.     Lea    $2800(a5),a6
  551.     Move.w    #255,d7
  552. MakeVertLoop    Move.w    #319,d6
  553.     Move.b    #$80,d5
  554.     Moveq.l    #7,d4
  555. MakeHorizLoop    Move.b    (a6),d0
  556.     And.b    d5,d0
  557.     Ror.b    d4,d0
  558.     Move.b    (a5),d1
  559.     And.b    d5,d1
  560.     Ror.b    d4,d1
  561.     Add.b    d0,d0
  562.     Or.b    d1,d0
  563.     Move.b    (a4),d1
  564.     And.b    d5,d1
  565.     Ror.b    d4,d1
  566.     Add.b    d0,d0
  567.     Or.b    d1,d0
  568.     Move.b    (a3),d1
  569.     And.b    d5,d1
  570.     Ror.b    d4,d1
  571.     Add.b    d0,d0
  572.     Or.b    d1,d0
  573.     Move.b    (a2),d1
  574.     And.b    d5,d1
  575.     Ror.b    d4,d1
  576.     Add.b    d0,d0
  577.     Or.b    d1,d0
  578.     And.w    #31,d0
  579.     Add.w    d0,d0
  580.     Move.w    0(a1,d0.w),(a0)+
  581.     Ror.b    #1,d5
  582.     Bpl    SkipAdd
  583.     Addq    #1,a2
  584.     Addq    #1,a3
  585.     Addq    #1,a4
  586.     Addq    #1,a5
  587.     Addq    #1,a6
  588. SkipAdd    Subq.b    #1,d4
  589.     And.b    #7,d4
  590.     Dbf    d6,MakeHorizLoop
  591.     Dbf    d7,MakeVertLoop
  592.     Rts    
  593.  
  594. MakeColourData2    Move.l    ScreenBase(pc),a3
  595.     Lea    Palette(pc),a1
  596.     Move.l    ColourTabBase(pc),a2
  597.     
  598.     Move.l    #255,d6
  599. GetLine    Move.l    a3,a0
  600.     Moveq    #0,d4    ; Colour reg
  601.     Moveq    #39,d5
  602. GetNewByte    Moveq    #7,d1
  603.     
  604. GetPixel    Moveq    #0,d3
  605.     Moveq    #0,d2
  606.     Move.b    $00(a0),d0
  607.     Bsr    CheckBit
  608.     Addq    #1,d3
  609.     Move.b    $28(a0),d0
  610.     Bsr    CheckBit
  611.     Addq    #1,d3
  612.     Move.b    $50(a0),d0
  613.     Bsr    CheckBit
  614.     Addq    #1,d3
  615.     Move.b    $78(a0),d0
  616.     Bsr    CheckBit
  617.     Addq    #1,d3
  618.     Move.b    $a0(a0),d0
  619.     Bsr    CheckBit
  620.     Addq    #1,d3
  621.     Move.b    $c8(a0),d0
  622.     Bsr    CheckBit
  623.  
  624.     Move.l    d2,a4
  625.     Asr.w    #4,d2
  626.     And.w    #3,d2
  627.     Cmpi.w    #0,d2
  628.     Beq    NewBaseCol
  629.     Cmpi.w    #1,d2
  630.     Beq    ChangeBlue
  631.     Cmpi.w    #2,d2
  632.     Beq    ChangeRed
  633.     Cmpi.w    #3,d2
  634.     Beq    ChangeGreen
  635.     
  636. NewBaseCol    Move.l    a4,d0
  637.     And.l    #$f,d0
  638.     Add.w    d0,d0
  639.     Move.w    (a1,d0),d4
  640.     Bra    DoPixel
  641.     
  642. ChangeBlue    Move.l    a4,d0
  643.     And.w    #$f,d0
  644.     And.w    #$ff0,d4
  645.     Or.w    d0,d4
  646.     Bra    DoPixel
  647.     
  648. ChangeRed    Move.l    a4,d0
  649.     And.w    #$f,d0
  650.     Asl.w    #8,d0
  651.     And.w    #$0ff,d4
  652.     Or.w    d0,d4
  653.     Bra    DoPixel
  654.  
  655. ChangeGreen    Move.l    a4,d0
  656.     And.w    #$f,d0
  657.     Asl.w    #4,d0
  658.     And.w    #$f0f,d4
  659.     Or.w    d0,d4
  660.     Bra    DoPixel
  661.     
  662. DoPixel    Move.w    d4,(a2)+
  663.     Subq    #1,d1
  664.     Cmpi.w    #-1,d1
  665.     Bne    GetPixel
  666.     Addq    #1,a0
  667.     Dbf    d5,GetNewByte
  668.     Add.l    #$f0,a3
  669.     Dbf    d6,GetLine
  670.     Rts
  671.  
  672. CheckBit    Btst    d1,d0
  673.     Beq    DoneBit
  674.     Bset    d3,d2
  675. DoneBit    Rts
  676.  
  677. MakeCopper    Move.l    CopperListPt1(pc),a0
  678.     Move.l    CopperListPt2(pc),a1
  679.     Move.w    #$37,d1
  680.     Move.w    #$37,d2
  681.     Move.l    #287,d7
  682.     Move.b    #$1c,d0
  683. MakeCopLoop1    Move.b    d0,(a0)+
  684.     Move.b    d0,(a1)+
  685.     Move.b    d1,(a0)+
  686.     Move.b    d1,(a1)+
  687.     Move.w    #$fffe,(a0)+
  688.     Move.w    #$fffe,(a1)+
  689.     Move.l    #44,d6
  690. MakeCopLoop2    Move.l    #$01800000,(a0)+
  691.     Move.l    #$01800000,(a1)+
  692.     Dbf    d6,MakeCopLoop2
  693.     Addq.w    #1,d0
  694.     Exg    d1,d2
  695.     Dbf    d7,MakeCopLoop1
  696.     Move.l    #$fffffffe,(a0)+
  697.     Move.l    #$fffffffe,(a1)+
  698.     Rts    
  699.     
  700. MakeColourData1    Move.l    ColourTabBase(pc),a0
  701.     Moveq    #0,d0
  702.     Move.l    #255,d7
  703. MakeVertLoop1    Move.l    #319,d6
  704. MakeHorizLoop1    Addq    #1,d1
  705.     Move.w    d1,d2
  706.     Asl.w    #8,d2
  707.     And.w    #$f00,d2
  708.     Or.w    d0,d2
  709.     Move.w    d2,(a0)+
  710.     Dbf    d6,MakeHorizLoop1
  711.     Addq    #1,d0
  712.     Moveq    #0,d1
  713.     Dbf    d7,MakeVertLoop1
  714.     Rts
  715.  
  716. SineVar1    Dc.w    0
  717. SineVar2    Dc.w    0
  718. SineVar3    Dc.w    0
  719. ZRot    Dc.w    0
  720. XPos    Dc.w    $00A0
  721. YPos    Dc.w    $0028
  722.  
  723. RotSines    Dc.w    $FFE6
  724.     Dc.w    $FFEC
  725.     Dc.w    $FFE6
  726.     Dc.w    $0014
  727.     Dc.w    $001A
  728.     Dc.w    $0014
  729. RotSineX1    Dc.w    0
  730. RotSineX2    Dc.w    0
  731. RotSineX3    Dc.w    0
  732. RotSineX4    Dc.w    0
  733. RotSineX5    Dc.w    0
  734. RotSineX6    Dc.w    0
  735.  
  736. MatrixVar1    Dc.l    0
  737. MatrixVar2    Dc.l    0
  738. MatrixVar3    Dc.l    0
  739. MatrixVar4    Dc.l    0
  740. MatrixVar5    Dc.l    0
  741. MatrixVar6    Dc.l    0
  742.  
  743. Palette    Dc.w    $000,$000,$111,$111,$222,$222,$333,$333
  744.     Dc.w    $444,$444,$555,$555,$666,$666,$777,$777
  745.     Dc.w    $888,$888,$999,$999,$aaa,$aaa,$bbb,$bbb
  746.     Dc.w    $ccc,$ccc,$ddd,$ddd,$eee,$eee,$fff,$fff
  747.     
  748. PiccyBase    Dc.l    $a0000
  749. ColourTabBase    Dc.l    MainBase
  750. CopperListPt1    Dc.l    CopperList1
  751. CopperListPt2    Dc.l    CopperList2
  752.  
  753. CopSine    Incbin    Work:Programming/lsdcode/SysData/CopRot.Sine
  754.  
  755. WaitBlitter    Btst    #$6,$2(a6)
  756.     Bne    WaitBlitter
  757.     Rts
  758.  
  759. VBL    Move.l    $Dff004,d0
  760.     And.l    #$1ff00,d0
  761.     Cmp.l    #$13000,d0
  762.     Bne    VBL
  763.     Rts
  764.  
  765. KillSys    Bsr.s    SysWait    
  766.  
  767.     Move.l    $4,a6    
  768.     Lea    GFXName(pc),a1    
  769.     Moveq    #0,d0    
  770.     Jsr    -552(a6)    
  771.         
  772.     Lea    OldCop1(pc),a5
  773.     Move.l    $26(a0),$0(a5)    
  774.     Move.l    $32(a0),$4(a5)    
  775.     
  776.     Lea    HardWare,a6
  777.     Move.w    IntEnaR(a6),d0    
  778.     Move.w    DMAConR(a6),d1  
  779.     Or.w    #$8000,d0    
  780.     And.w    #$03ff,d1    
  781.     Or.w    #$8000,d1    
  782.     Move.w    d0,$8(a5)    
  783.     Move.w    d1,$a(a5)    
  784.     
  785.     Move.w    #$7fff,IntEna(a6) 
  786.     Move.w    #$7fff,DMACon(a6) 
  787.     Rts
  788.  
  789. SysWait    Move.w    #15,d7    
  790. SysWaitLoop    Move.l    #$05000,d1    
  791.     Bsr.s    WaitVBL    
  792.     Bsr.s    DoWaitVBL    
  793.     Dbf    d7,SysWaitLoop    
  794.     Rts
  795.  
  796. DoWaitVBL    Move.l    #$03000,d1    
  797. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  798.     Lea    HardWare,a6    
  799. WaitVBLLoop    Move.l    VPosR(a6),d0    
  800.     And.l    #$1ff00,d0    
  801.     Cmp.l    d1,d0    
  802.     Bne.s    WaitVBLLoop    
  803.     Movem.l    (sp)+,d0-d1/a6    
  804.     Rts        
  805.  
  806. ReturnSys    Lea    HardWare,a6    
  807.     Move.w    OldIntEna(pc),IntEna(a6)
  808.     Move.w    OldDMACon(pc),DMACon(a6)
  809.     Move.l    OldCop1(pc),Cop1lc(a6)
  810.     Move.l    OldCop2(pc),Cop2lc(a6)
  811.     Rts
  812.  
  813. GFXName    Dc.b    "graphics.library",0
  814.     Even
  815. OldCop1    Dc.l    0    
  816. OldCop2    Dc.l    0    
  817. OldIntEna    Dc.w    0    
  818. OldDmaCon    Dc.w    0    
  819. ScreenBase    Dc.l    $40000
  820.  
  821. PiccyWidth    Dc.w    0
  822. PiccyHeight    Dc.w    0
  823. Planes    Dc.w    0
  824.  
  825. Cmv    Macro
  826.     Dc.w    \2,\1
  827.     EndM
  828.     
  829. Cwt    Macro
  830.     Dc.w    (\1*$100)+$01,$fffe
  831.     EndM    
  832.  
  833. Pal    Macro
  834.     Dc.w    $ffe1,$fffe
  835.     EndM    
  836.  
  837. EndCop    Macro
  838.     Dc.w    $ffff,$fffe
  839.     EndM    
  840.  
  841.     Section    "ChipStuff",Code_c
  842.  
  843. MainCopper    Dc.l    $008E1C71
  844.     Dc.l    $00903CD1
  845.     Dc.l    $00920028
  846.     Dc.l    $009400D0
  847.     Dc.l    $01000200
  848.     Dc.l    $01820000
  849.     Dc.l    $01080000
  850.     Dc.l    $010A0000
  851. Copper2Ptr    Dc.l    $00840000
  852.     Dc.l    $00860000
  853.     Dc.l    $008AFFFF
  854.  
  855. CopperList    Cwt    $15    
  856.     Cmv    $0200,BplCon0    
  857.     Cmv    $00bb,BplCon1    
  858.     Cmv    $000a,BplCon2    
  859.     Cmv    $0034,DdfStrt    
  860.     Cmv    $00c8,DdfStop    
  861.     Cmv    $1681,DiwStrt    
  862.     Cmv    $36c1,DiwStop
  863.     Cmv    $c8,BplMod1    
  864.     Cmv    $c8,BplMod2    
  865.     
  866.     Cwt    $25        
  867.     Cmv    $0000,Color00
  868.     Cmv    $0111,Color01
  869.     Cmv    $0222,Color02
  870.     Cmv    $0333,Color03
  871.     Cmv    $0444,Color04
  872.     Cmv    $0555,Color05
  873.     Cmv    $0666,Color06
  874.     Cmv    $0777,Color07
  875.     Cmv    $0888,Color08
  876.     Cmv    $0999,Color09
  877.     Cmv    $0aaa,Color10
  878.     Cmv    $0bbb,Color11
  879.     Cmv    $0ccc,Color12
  880.     Cmv    $0ddd,Color13
  881.     Cmv    $0eee,Color14
  882.     Cmv    $0fff,Color15
  883.     
  884. CopperBPLS    Cmv    $4,BplPt0h
  885.     Cmv    $0,BplPt0l
  886.     Cmv    $4,BplPt1h
  887.     Cmv    $28,BplPt1l
  888.     Cmv    $4,BplPt2h
  889.     Cmv    $50,BplPt2l
  890.     Cmv    $4,BplPt3h
  891.     Cmv    $78,BplPt3l
  892.     Cmv    $4,BplPt4h
  893.     Cmv    $a0,BplPt4l
  894.     Cmv    $4,BplPt5h
  895.     Cmv    $c8,BplPt5l
  896.     
  897.     Cwt    $28    
  898.     Cmv    $6a00,BplCon0    
  899.  
  900.     EndCop
  901.     
  902. IFFPiccy    Incbin    ram:Piccy
  903. EndFile
  904.  
  905. ****Custom Chip Registers****
  906.  
  907. Hardware    = $Dff000
  908.  
  909. ;Control Registers
  910.  
  911. Dmaconr    = $002
  912. Vposr    = $004
  913. Vhposr    = $006
  914. Joy0dat    = $00A
  915. Joy1dat    = $00C
  916. Clxdat    = $00E
  917. Intenar    = $01C
  918. Intereqr    = $01E
  919. Copcon    = $02E
  920.  
  921. ;Blitter Registers
  922.  
  923. Bltcon0    = $040
  924. Bltcon1    = $042
  925. Bltafwm    = $044
  926. Bltalwm    = $046
  927. Bltcpth    = $048
  928. Bltcptl    = $04A
  929. Bltbpth    = $04C
  930. Bltbptl    = $04E
  931. Bltapth    = $050
  932. Bltaptl    = $052
  933. Bltdpth    = $054
  934. Bltdptl    = $056
  935. Bltsize    = $058
  936. Bltcmod    = $060
  937. Bltbmod    = $062
  938. Bltamod    = $064
  939. Bltdmod    = $066
  940. Bltcdat    = $070
  941. Bltbdat    = $072
  942. Bltadat    = $074
  943.  
  944. ;Copper Registers
  945.  
  946. Cop1lc    = $080
  947. Cop1lch    = $080
  948. Cop1lcl    = $082
  949. Cop2lc    = $084
  950. Cop2lch    = $084
  951. Cop2lcl    = $086
  952. Copjmp1    = $088
  953. Copjmp2    = $08A
  954. Diwstrt    = $08E
  955. Diwstop    = $090
  956. Ddfstrt    = $092
  957. Ddfstop    = $094
  958. Dmacon    = $096
  959. Clxcon    = $098
  960. Intena    = $09A
  961. Intreq    = $09C
  962.  
  963. ;BitPlane Registers 
  964.  
  965. BplCon0    = $100
  966. BplCon1    = $102
  967. BplCon2    = $104
  968. BplMod1    = $108
  969. BplMod2    = $10a
  970.  
  971. BplPt0h    = $0e0
  972. BplPt0l    = $0e2
  973. BplPt1h    = $0e4
  974. BplPt1l    = $0e6
  975. BplPt2h    = $0e8
  976. BplPt2l    = $0ea
  977. BplPt3h    = $0ec
  978. BplPt3l    = $0ee
  979. BplPt4h    = $0f0
  980. BplPt4l    = $0f2
  981. BplPt5h    = $0f4
  982. BplPt5l    = $0f6
  983.  
  984. ;Colour Registers
  985.  
  986. Color00    = $180
  987. Color01    = $182
  988. Color02    = $184
  989. Color03    = $186
  990. Color04    = $188
  991. Color05    = $18a
  992. Color06    = $18c
  993. Color07    = $18e
  994. Color08    = $190
  995. Color09    = $192
  996. Color10    = $194
  997. Color11    = $196
  998. Color12    = $198
  999. Color13     = $19a
  1000. Color14     = $19c
  1001. Color15     = $19e
  1002. Color16     = $1a0
  1003. Color17     = $1a2
  1004. Color18     = $1a4
  1005. Color19     = $1a6
  1006. Color20     = $1a8
  1007. Color21     = $1aa
  1008. Color22     = $1ac
  1009. Color23     = $1ae
  1010. Color24     = $1b0
  1011. Color25     = $1b2
  1012. Color26     = $1b4
  1013. Color27     = $1b6
  1014. Color28     = $1b8
  1015. Color29     = $1ba
  1016. Color30     = $1bc
  1017. Color31     = $1be
  1018.  
  1019. EcsNop    = $1fe
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.